package VN.EDU.IMIC.DEVELOPER.TRANTHITHANHNGA.EXCEPTION;

public class Introduction {

}
/* 1. Đặc điểm Exception:
 * a. Exception là đối tượng mô tả ngoại lệ diễn ra trong một chương trình. (ví dụ:*/

  public class ArrayAccess{
 public static void main (String args[]){
 String [] students = {"a", "b", null};
 System.out.println(students[5].length());
 
 => lỗi ko thể lấy phần tử vị trí 5

 public class OpenFile{
	 public static void main (String args[]){
		 FileInputStream fis = new FileInputStream("file.txt");
	 }
 }
  => lỗi file không tồn tại		  
/* b.	- Phân loại exception
Là đối tượng của lớp java.lang.Throwable
+ Checked exception
+ Uncheck exception
+ Error lỗi nằm ngoài phạm vi ứng dụng, 
được java trả về trong đối tượng java.io.IOError. 
Ví dụ ứng dụng mở một tập tin thành công nhưng khi đọc dữ liệu lại không đọc được do ổ cứng bị hỏng một vài sector vật lý, …
	
Lợi ích exception: Khi lỗi ngoại lệ xảy ra trong java, exception được ném ra. 
màn hình console thông báo cho biết vi trí (dòng code) mà xảy ra ngoại lệ, cùng với phương thức liên quan
(phương thức mà gọi dòng code ném ra lỗi ngoại lệ)
  
 Ví dụ*/ 
 public class Trace{
	  public static void main(String args[]){
		  method 1();
	  }
	  public static void method 1(){
		  method2();
	  }
	  public static void method2(){
		  String [] students = {"a", "b", null};
		  System.out.println(students[5].length());
	  }
  }
 
 /* tại console:
	  Exception in thread"main"
	  java.lang.ArrayIndexOutOfBoundsException: 5
	  at Trace.method2(Trace.java: 10)
	  at Trace.method1(Trace.java: 6)
	  at Trace. main (Trace.java: 3)
	  
 
		  
 * 2. Khi lỗi ngoại lệ xảy ra trong java, exception này được ném ra, dòng code mà đảm nhiệm xử lý lỗi này được gọi là exception handler
 * - Sử dụng try/catch/finally
 - Sử dụng throw
 */